Virtual memory addressing is a mechanism by which a system obscures the physical addresses of memory locations for the purposes of security and ease of memory management. For example, the operating system controls virtual address mapping such that an application accesses data via virtual addresses and cannot access data for other applications or the operating system. In another example, the operating system can move data between physical addresses, while maintaining the same virtual addresses for that data, thereby hiding memory management operations from the applications.
Virtual memory addressing requires an address translation step. More specifically, to access memory via virtual addresses, the virtual addresses are first translated to physical addresses and memory is accessed based on the physical addresses. Address translations are stored in page tables, which can be quite large. To reduce the latency associated with fetching address translations, address translation caches referred to as translation lookaside buffers are provided.